ลักษณะของความโฮโมไอคอนิก
ภาษาโฮโมไอคอนิก: ภาษาที่การแสดงผลภายในถูกแสดงออกในภาษาเอง ในการเขียนโปรแกรมอีลิกซ์ รหัสต้นฉบับไม่ใช่แค่ข้อความธรรมดา แต่เป็นโครงสร้างข้อมูลแบบฝังกันที่เรียกว่า ต้นไม้โครงสร้างคำสั่งเชิงนามธรรม (AST).
1. กฎตรรกะของการแทนค่า
อีลิกซ์ทำให้โครงสร้างคำสั่งเชิงนามธรรม (AST) ง่ายขึ้น โดยการแทนค่าตัวแปรพื้นฐานด้วยตัวมันเอง อะตอม ตัวเลข ลิสต์ (รวมถึงลิสต์แบบคีย์เวิร์ด) ไบนารี และคู่ที่มีองค์ประกอบสองรายการ จะถูกแทนค่าภายในโดยไม่ต้องห่อหุ้มซับซ้อน
[do: 1]
iex> quote do: "binaries"
"binaries"
2. โครงสร้างคู่ของโครงสร้างคำสั่งเชิงนามธรรม (AST)
การแปลงโค้ดส่วนใหญ่จะได้ผลลัพธ์เป็นคู่ที่มีองค์ประกอบสามชิ้น: {ชื่อฟังก์ชัน, เมตาดาต้า, อาร์กิวเมนต์}. เช่น การเรียกใช้ฟังก์ชันเช่น 1 + 2 กลายเป็น {:+, [line: 1], [1, 2]}. ซึ่งทำให้ภาษาสามารถจัดการกับ โค้ดเป็นข้อมูล.
3. มาโคร: การเลื่อนการดำเนินการ
มาโครคือ "วิธีหนึ่งในการเลื่อนการดำเนินการของประโยคโดยการแทรกโค้ดกลับไปยังโครงสร้างภายในโปรแกรมของเรา" ขณะที่ฟังก์ชันมาตรฐานประเมินอาร์กิวเมนต์ ก่อน การเรียกใช้ มาโครจะได้รับ โครงสร้างคำสั่งเชิงนามธรรมแบบดิบซึ่งทำให้สามารถแทรกตรรกะก่อนการคอมไพล์ได้
$$\text{รหัสต้นฉบับ} \xrightarrow{\text{Quote}} \text{คู่โครงสร้างคำสั่งเชิงนามธรรม} \xrightarrow{\text{มาโคร}} \text{โครงสร้างคำสั่งเชิงนามธรรมที่เปลี่ยนแปลงแล้ว}$$